package mx.com.sintelti.academia.evaluacionFinal.juanJose.daoImpl;

import java.util.*;

import org.hibernate.Query;
import org.hibernate.Session;

import mx.com.sintelti.academia.evaluacionFinal.juanJose.dao.ClientesDao;
import mx.com.sintelti.academia.evaluacionFinal.juanJose.entity.ClientesEntity;
import mx.com.sintelti.academia.evaluacionFinal.util.HibernateUtil;

public class ClientesDaoImpl implements ClientesDao {
	
	Session session;

	@Override
	public List<ClientesEntity> buscarPorFechaAlta(Date fechaAlta) {
		
		List<ClientesEntity> clientesEncontrados = new ArrayList<ClientesEntity>();
		session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		String cadenaQuery = "select * from Clientes where fecha_alta > ?";
		Query query = session.createSQLQuery(cadenaQuery);
		query.setParameter(0, fechaAlta);
		clientesEncontrados = query.list();
		return clientesEncontrados;
		  
	}

	@Override
	public ClientesEntity busquedaPorPaterno(String apPaterno) {
		session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		
		String cadenaQuery = "from ClientesEntity where apellidoPaterno = ?";
		
		Query query = session.createSQLQuery(cadenaQuery);		
		query.setParameter(0, apPaterno);
		
		query.executeUpdate();	
		
		return (ClientesEntity)query.uniqueResult();
	}

	@Override
	public void actualizar(ClientesEntity cliente) {
		session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		String cadenaQuery = "update Clientes set id_cliente = idCliente," +
				" nombre = nombre," +
				" apellido_paterno = apellidoPaterno, " +
				"apellido_materno = apellidoMaterno, " +
				"fecha_alta = fechaAlta, " +
				"fecha_baja = fechaBaja where id_cliente = ?";
		Query query = session.createSQLQuery(cadenaQuery);
		query.setParameter(0, cliente.getIdCliente());
		query.executeUpdate();
		
	}

}
